package com.doubao.wechat.service;

import com.doubao.common.result.Result;
import com.doubao.wechat.dto.response.OAuthTokenResponse;
import com.doubao.wechat.dto.response.OAuthUserInfo;

/**
 * OAuth 服务接口
 */
public interface OAuthService {
    /**
     * 生成授权 URL
     *
     * @return 授权 URL
     */
    String generateAuthorizationUrl();

    /**
     * 根据授权码获取访问令牌
     *
     * @param code 授权码
     * @return OAuth 令牌响应
     */
    Result<OAuthTokenResponse> getAccessToken(String code);

    /**
     * 使用令牌获取用户信息
     *
     * @param accessToken 访问令牌
     * @return OAuth 用户信息
     */
    Result<OAuthUserInfo> getUserInfo(String accessToken);

    /**
     * 刷新访问令牌
     *
     * @param refreshToken 刷新令牌
     * @return 新的 OAuth 令牌响应
     */
    Result<OAuthTokenResponse> refreshToken(String refreshToken);
}